
#ifndef ICLASSLIST_H
#define ICLASSLIST_H

#include <BClass>

namespace BWE
{
	class ClassList : public BClass
	{
	public:
		ClassList();

		virtual BClass* clone() const;

		void create(int argc, BValue* argv);
		void create_size(int argc, BValue* argv);
		void create_value_size(int argc, BValue* argv);
		void create_other(int argc, BValue* argv);
		void release(int argc, BValue* argv);

		void size(int argc, BValue* argv);
		void empty(int argc, BValue* argv);
		void clear(int argc, BValue* argv);

		void resize(int argc, BValue* argv);
		void check(int argc, BValue* argv);

		void set_pos_value(int argc, BValue* argv);
		void set_pos_list(int argc, BValue* argv);

		void find(int argc, BValue* argv);
		void rfind(int argc, BValue* argv);

		void count(int argc, BValue* argv);
		void contain(int argc, BValue* argv);
		void replace(int argc, BValue* argv);

		void move(int argc, BValue* argv);
		void swap(int argc, BValue* argv);

		void reverse(int argc, BValue* argv);

		void raise(int argc, BValue* argv);
		void lower(int argc, BValue* argv);

		void sort_dir(int argc, BValue* argv);

		void find_min(int argc, BValue* argv);
		void find_max(int argc, BValue* argv);

		void index_value(int argc, BValue* argv);

		void first(int argc, BValue* argv);
		void first_const(int argc, BValue* argv);

		void middle(int argc, BValue* argv);
		void middle_const(int argc, BValue* argv);

		void last(int argc, BValue* argv);
		void last_const(int argc, BValue* argv);

		void min(int argc, BValue* argv);
		void min_const(int argc, BValue* argv);

		void max(int argc, BValue* argv);
		void max_const(int argc, BValue* argv);

		void at_index(int argc, BValue* argv);
		void at_index_const(int argc, BValue* argv);

		void prepend(int argc, BValue* argv);
		void prepend_value(int argc, BValue* argv);
		void prepend_value_size(int argc, BValue* argv);
		void prepend_other(int argc, BValue* argv);

		void append(int argc, BValue* argv);
		void append_value(int argc, BValue* argv);
		void append_value_size(int argc, BValue* argv);
		void append_list_size(int argc, BValue* argv);
		void append_other(int argc, BValue* argv);

		void insert_pos(int argc, BValue* argv);
		void insert_pos_value_size(int argc, BValue* argv);

		void insert_pos_list_size(int argc, BValue* argv);
		void insert_pos_other(int argc, BValue* argv);

		void insert_it(int argc, BValue* argv);
		void insert_value_size(int argc, BValue* argv);

		void insert_it_list_size(int argc, BValue* argv);
		void insert_it_other(int argc, BValue* argv);

		void remove_pos_count(int argc, BValue* argv);
		void remove_value(int argc, BValue* argv);

		void remove_list_size(int argc, BValue* argv);
		void remove_other(int argc, BValue* argv);

		void removeAll_value(int argc, BValue* argv);
		void removeAll_other(int argc, BValue* argv);

		void push(int argc, BValue* argv);
		void push_value(int argc, BValue* argv);

		void pop(int argc, BValue* argv);
		void pop_value(int argc, BValue* argv);

		void erase(int argc, BValue* argv);

		void erase_begin_end(int argc, BValue* argv);

		void begin(int argc, BValue* argv);
		void seek(int argc, BValue* argv);
		void end(int argc, BValue* argv);

		void begin_const(int argc, BValue* argv);
		void seek_const(int argc, BValue* argv);
		void end_const(int argc, BValue* argv);

		void rbegin(int argc, BValue* argv);
		void rseek(int argc, BValue* argv);
		void rend(int argc, BValue* argv);

		void rbegin_const(int argc, BValue* argv);
		void rseek_const(int argc, BValue* argv);
		void rend_const(int argc, BValue* argv);

		void operator_assign(int argc, BValue* argv);

		void operator_plus_value(int argc, BValue* argv);
		void operator_plus_list(int argc, BValue* argv);

		void operator_plus_equal_value(int argc, BValue* argv);
		void operator_plus_equal_list(int argc, BValue* argv);

		void operator_minus_equal_value(int argc, BValue* argv);
		void operator_minus_equal_list(int argc, BValue* argv);

		void operator_bracket(int argc, BValue* argv);
		void operator_bracket_const(int argc, BValue* argv);

		void operator_square_bracket(int argc, BValue* argv);
		void operator_square_bracket_const(int argc, BValue* argv);

		void operator_append_value(int argc, BValue* argv);
		void operator_append_list(int argc, BValue* argv);

		void operator_equal(int argc, BValue* argv);
		void operator_unequal(int argc, BValue* argv);
	};
}

#endif